<?php

namespace Kunfeng\Dify\Enum;

/**
 * Dify 响应模式枚举
 */
class ResponseMode
{
    /**
     * 流式模式（推荐）。基于 SSE（Server-Sent Events）实现类似打字机输出方式的流式返回。
     */
    public const STREAMING = 'streaming';

    /**
     * 阻塞模式，等待执行完毕后返回结果。（请求若流程较长可能会被中断）。
     * 由于 Cloudflare 限制，请求会在 100 秒超时无返回后中断。
     */
    public const BLOCKING = 'blocking';

    /**
     * 判断是否为阻塞模式
     */
    public static function isBlocking(string $mode): bool
    {
        return $mode === self::BLOCKING;
    }

    /**
     * 判断是否为流式模式
     */
    public static function isStreaming(string $mode): bool
    {
        return $mode === self::STREAMING;
    }

    /**
     * 获取所有模式
     */
    public static function getAll(): array
    {
        return [
            self::STREAMING,
            self::BLOCKING,
        ];
    }
}